package cn.biplam.common.bean.tree;

import java.util.ArrayList;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.client.DbResource;
import cn.biplam.common.paramters.SelectConstant.Operator_Rela;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.sqlresult.SqlResult;

public abstract class TreeParentData extends Bean{

	/**
	 * 设置树的节点级别
	 * @param level
	 */
	public abstract void setLevel(int level);

	/**
	 * 放入一个字符类型过滤条件
	 * @param filterFieldName	过滤字段名
	 * @param filterValue		过滤值
	 * @param rela 比较符常量
	 * @throws ErrorMessage
	 */
	public abstract void putStringFilter(String filterFieldName,
			String filterValue, Operator_Rela rela) throws ErrorMessage;

	/**
	 * 放入一个数字类型过滤条件
	 * @param filterFieldName	过滤字段名
	 * @param filterValue		过滤值
	 * @param rela 比较符常量
	 * @throws ErrorMessage
	 */
	public abstract void putNumFilter(String filterFieldName,
			String filterValue, Operator_Rela rela) throws ErrorMessage;

	/**
	 * 返回下级节点的SqlResult
	 * @return	SqlResult
	 * @throws ErrorMessage 
	 */
	public abstract SqlResult getReslut() throws ErrorMessage;

	/**
	 * 开始查找下级节点
	 * @throws ErrorMessage 
	 */
	public abstract void start() throws ErrorMessage;

	/**
	 * 返回下级节点的ArrayList
	 * @return	ArrayList<String>
	 */
	public abstract ArrayList<SqlResult> getNodeList();
	
	/**
	 * 新建实例
	 * @param dbResource	数据源(指定查询请求的数据源)
	 * @param tableName		树形表名称
	 * @param keyField		主键字段名称
	 * @param parentField	上级字段名称
	 * @param keyID			开始节点的主键ID
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public  static TreeParentData getNewInstance(DbResource dbResource,String tableName,TreeParentDataMap fieldMap,String keyID) throws ErrorMessage{
		return (TreeParentData)get(TreeParentData.class.getSimpleName(), dbResource,tableName,fieldMap,keyID);
	}

}